{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "2b7bc8ab",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.impute import SimpleImputer\n",
    "from sklearn.preprocessing import OneHotEncoder\n",
    "from sklearn.feature_extraction.text import CountVectorizer\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.compose import make_column_transformer\n",
    "from sklearn.pipeline import make_pipeline\n",
    "from sklearn.pipeline import Pipeline\n",
    "import pdb\n",
    "from collections import defaultdict\n",
    "### These imports give fit_transform method for free ###\n",
    "from sklearn.base import BaseEstimator, TransformerMixin \n",
    "from sklearn.preprocessing import FunctionTransformer\n",
    "from sklearn.preprocessing import MaxAbsScaler, StandardScaler\n",
    "from sklearn.preprocessing import LabelEncoder, LabelBinarizer\n",
    "import pdb\n",
    "from collections import defaultdict\n",
    "import pickle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "93751256",
   "metadata": {},
   "outputs": [],
   "source": [
    "# import the scikit-learn compatible transformer pipeline ##\n",
    "#from simformer import SimFormer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2da8e86f",
   "metadata": {},
   "outputs": [],
   "source": [
    "datapath = '../Ram/Data_Sets/'\n",
    "filename = 'heart.csv'\n",
    "sep = ','"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "313aacfb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(303, 14)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>age</th>\n",
       "      <th>sex</th>\n",
       "      <th>cp</th>\n",
       "      <th>trestbps</th>\n",
       "      <th>chol</th>\n",
       "      <th>fbs</th>\n",
       "      <th>restecg</th>\n",
       "      <th>thalach</th>\n",
       "      <th>exang</th>\n",
       "      <th>oldpeak</th>\n",
       "      <th>slope</th>\n",
       "      <th>ca</th>\n",
       "      <th>thal</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>63</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>145</td>\n",
       "      <td>233</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>150</td>\n",
       "      <td>0</td>\n",
       "      <td>2.3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>37</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>130</td>\n",
       "      <td>250</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>187</td>\n",
       "      <td>0</td>\n",
       "      <td>3.5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>41</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>130</td>\n",
       "      <td>204</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>172</td>\n",
       "      <td>0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>56</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>120</td>\n",
       "      <td>236</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>178</td>\n",
       "      <td>0</td>\n",
       "      <td>0.8</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>57</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>120</td>\n",
       "      <td>354</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>163</td>\n",
       "      <td>1</td>\n",
       "      <td>0.6</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   age  sex  cp  trestbps  chol  fbs  restecg  thalach  exang  oldpeak  slope  \\\n",
       "0   63    1   3       145   233    1        0      150      0      2.3      0   \n",
       "1   37    1   2       130   250    0        1      187      0      3.5      0   \n",
       "2   41    0   1       130   204    0        0      172      0      1.4      2   \n",
       "3   56    1   1       120   236    0        1      178      0      0.8      2   \n",
       "4   57    0   0       120   354    0        1      163      1      0.6      2   \n",
       "\n",
       "   ca  thal  target  \n",
       "0   0     1       1  \n",
       "1   0     2       1  \n",
       "2   0     2       1  \n",
       "3   0     2       1  \n",
       "4   0     2       1  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "###### train data set for the model #####\n",
    "df = pd.read_csv(datapath+filename,sep=sep)\n",
    "print(df.shape)\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "33fa35ae",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Imported DASK version = 0.0.91. nrows=None uses all rows. Set nrows=1000 to randomly sample fewer rows.\n",
      "output = featurewiz(dataname, target, corr_limit=0.70, verbose=2, sep=',', \n",
      "\t\theader=0, test_data='',feature_engg='', category_encoders='',\n",
      "\t\tdask_xgboost_flag=False, nrows=None)\n",
      "Create new features via 'feature_engg' flag : ['interactions','groupby','target']\n",
      "                                \n"
     ]
    }
   ],
   "source": [
    "from featurewiz import FeatureWiz"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "f76f07d9",
   "metadata": {},
   "outputs": [],
   "source": [
    "### Once the SimFormer pipeline is built, it can work with Featurewiz ##\n",
    "#smp = SimFormer(with_model=False, date_to_string=False)\n",
    "FW = FeatureWiz()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "4de73af3",
   "metadata": {},
   "outputs": [],
   "source": [
    "target = 'target'\n",
    "modeltype = 'Classification'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "5c4f4c9d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "age           int64\n",
       "sex           int64\n",
       "cp            int64\n",
       "trestbps      int64\n",
       "chol          int64\n",
       "fbs           int64\n",
       "restecg       int64\n",
       "thalach       int64\n",
       "exang         int64\n",
       "oldpeak     float64\n",
       "slope         int64\n",
       "ca            int64\n",
       "thal          int64\n",
       "target        int64\n",
       "dtype: object"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "if isinstance(target, str):\n",
    "    cols = [x for x in list(df) if x not in [target]]\n",
    "else:\n",
    "    cols = [x for x in list(df) if x not in target]\n",
    "X = df[cols]\n",
    "y = df[target]\n",
    "df.dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "348cd500",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "((303, 13), (303,))"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "###  find the y values that have low samples ####\n",
    "if modeltype != 'Regression':\n",
    "    low_counts = y.value_counts()[(y.value_counts()<=1).values].index\n",
    "    print(len(low_counts))\n",
    "    ## You need to remove those rows that have just one sample ##\n",
    "    X = X[~(y.isin(low_counts))]\n",
    "    y = y[~(y.isin(low_counts))]\n",
    "X.shape, y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "889492e3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(272, 13) (31, 13)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "if modeltype == 'Regression':\n",
    "    X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.1, random_state=999)\n",
    "else:\n",
    "    X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.1,stratify=y, random_state=999)\n",
    "print(X_train.shape, X_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "a02f4334",
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "### This returns a transformer + feature selection pipeline once you fit it ###\n",
    "#mlp = smp.fit(X_train, y_train)\n",
    "#FW.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "be211dfa",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.pipeline import make_pipeline\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.base import BaseEstimator, TransformerMixin \n",
    "from sklearn.preprocessing import FunctionTransformer\n",
    "from sklearn.preprocessing import MaxAbsScaler, StandardScaler\n",
    "from sklearn.impute import SimpleImputer\n",
    "from sklearn.preprocessing import OneHotEncoder\n",
    "from sklearn.model_selection import RandomizedSearchCV\n",
    "from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor\n",
    "pipe = Pipeline([('fw', FeatureWiz()),('logistic', LogisticRegression())])\n",
    "param_grid = {\"logistic__C\": np.logspace(-4, 4, 4)}\n",
    "search = RandomizedSearchCV(estimator=pipe,\n",
    "                            param_distributions=param_grid,\n",
    "                            scoring='accuracy',\n",
    "                            n_iter=3,\n",
    "                            n_jobs=-1,\n",
    "                            random_state=99,\n",
    "                            cv=3,\n",
    "                            error_score=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "f4715800",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "############################################################################################\n",
      "############       F A S T   F E A T U R E  E N G G    A N D    S E L E C T I O N ! ########\n",
      "# Be judicious with featurewiz. Don't use it to create too many un-interpretable features! #\n",
      "############################################################################################\n",
      "Skipping feature engineering since no feature_engg input...\n",
      "Skipping category encoding since no category encoders specified in input...\n",
      "Loading train data...\n",
      "    Shape of your Data Set loaded: (272, 14)\n",
      "    Caution: We will try to reduce the memory usage of dataframe from 0.03 MB\n",
      "    Memory usage after optimization is: 0.01 MB\n",
      "        decreased by 78.3%\n",
      "     Loaded. Shape = (272, 14)\n",
      "No test data filename given...\n",
      "############## C L A S S I F Y I N G  V A R I A B L E S  ####################\n",
      "Classifying variables in data set...\n",
      "    13 Predictors classified...\n",
      "        No variables removed since no ID or low-information variables found in data set\n",
      "No GPU active on this device\n",
      "    Tuning XGBoost using CPU hyper-parameters. This will take time...\n",
      "Removing 0 columns from further processing since ID or low information variables\n",
      "    columns removed: []\n",
      "    After removing redundant variables from further processing, features left = 13\n",
      "#### Single_Label Binary_Classification Feature Selection Started ####\n",
      "Searching for highly correlated variables from 13 variables using SULOV method\n",
      "#####  SULOV : Searching for Uncorrelated List Of Variables (takes time...) ############\n",
      "    No highly correlated variables in data set to remove. All selected...\n",
      "Time taken for SULOV method = 0 seconds\n",
      "    Adding 0 categorical variables to reduced numeric variables  of 13\n",
      "############## F E A T U R E   S E L E C T I O N  ####################\n",
      "    using regular XGBoost\n",
      "Train and Test loaded into Dask dataframes successfully after feature_engg completed\n",
      "Current number of predictors = 13 \n",
      "XGBoost version: 1.5.1\n",
      "Number of booster rounds = 100\n",
      "        using 13 variables...\n",
      "            Time taken for regular XGBoost feature selection = 0 seconds\n",
      "        using 10 variables...\n",
      "            Time taken for regular XGBoost feature selection = 0 seconds\n",
      "        using 7 variables...\n",
      "            Time taken for regular XGBoost feature selection = 0 seconds\n",
      "        using 4 variables...\n",
      "            Time taken for regular XGBoost feature selection = 1 seconds\n",
      "        using 1 variables...\n",
      "            Time taken for regular XGBoost feature selection = 1 seconds\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x1080 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            Total time taken for XGBoost feature selection = 2 seconds\n",
      "    ID variables are always selected so that rows can be identified. But they are not important!\n",
      "Selected 13 important features:\n",
      "['cp', 'thal', 'ca', 'exang', 'slope', 'sex', 'oldpeak', 'age', 'chol', 'thalach', 'trestbps', 'fbs', 'restecg']\n",
      "    Time taken = 2 seconds\n",
      "Returning list of 13 important features and a dataframe.\n",
      "    Time taken to create entire pipeline = 2 second(s)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "RandomizedSearchCV(cv=3, error_score=1,\n",
       "                   estimator=Pipeline(steps=[('fw', FeatureWiz()),\n",
       "                                             ('logistic',\n",
       "                                              LogisticRegression())]),\n",
       "                   n_iter=3, n_jobs=-1,\n",
       "                   param_distributions={'logistic__C': array([1.00000000e-04, 4.64158883e-02, 2.15443469e+01, 1.00000000e+04])},\n",
       "                   random_state=99, scoring='accuracy')"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "search.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "32dfc242",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(31,)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred = search.predict(X_test)\n",
    "y_pred.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "c2bbb9d6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8697478991596639\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import balanced_accuracy_score, mean_squared_error\n",
    "if modeltype == 'Regression':\n",
    "    print(np.sqrt(mean_squared_error(y_test, y_pred)))\n",
    "else:\n",
    "    print(balanced_accuracy_score(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "87fd10f4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-4e5258b8-f539-415c-8dd6-a149e382a77f {color: black;background-color: white;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f pre{padding: 0;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-toggleable {background-color: white;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-estimator:hover {background-color: #d4ebff;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 2em;bottom: 0;left: 50%;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-item {z-index: 1;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-parallel::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 2em;bottom: 0;left: 50%;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-parallel-item {display: flex;flex-direction: column;position: relative;background-color: white;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-parallel-item:only-child::after {width: 0;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;position: relative;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-label label {font-family: monospace;font-weight: bold;background-color: white;display: inline-block;line-height: 1.2em;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-label-container {position: relative;z-index: 2;text-align: center;}#sk-4e5258b8-f539-415c-8dd6-a149e382a77f div.sk-container {display: inline-block;position: relative;}</style><div id=\"sk-4e5258b8-f539-415c-8dd6-a149e382a77f\" class\"sk-top-container\"><div class=\"sk-container\"><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"25ef088c-e1cf-40d4-9db2-b6675e66afba\" type=\"checkbox\" ><label class=\"sk-toggleable__label\" for=\"25ef088c-e1cf-40d4-9db2-b6675e66afba\">Pipeline</label><div class=\"sk-toggleable__content\"><pre>Pipeline(steps=[('fw', FeatureWiz()), ('logistic', LogisticRegression())])</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"0f9123df-5841-4965-9f91-55b2c5404919\" type=\"checkbox\" ><label class=\"sk-toggleable__label\" for=\"0f9123df-5841-4965-9f91-55b2c5404919\">FeatureWiz</label><div class=\"sk-toggleable__content\"><pre>FeatureWiz()</pre></div></div></div><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"364f8e20-f0d5-42af-852d-659c457ed690\" type=\"checkbox\" ><label class=\"sk-toggleable__label\" for=\"364f8e20-f0d5-42af-852d-659c457ed690\">LogisticRegression</label><div class=\"sk-toggleable__content\"><pre>LogisticRegression()</pre></div></div></div></div></div></div></div>"
      ],
      "text/plain": [
       "Pipeline(steps=[('fw', FeatureWiz()), ('logistic', LogisticRegression())])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn import set_config\n",
    "#### You can display your pipeline in a nice diagram if it is a Jupyter Notebook ##\n",
    "set_config(display=\"diagram\")\n",
    "pipe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "74f94b01",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "74bfb7c1",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
